/****************************************************
	文件：TimerServiceExample.cs
	作者：HuskyT
	邮箱：1005240602@qq.com
	日期：2020/8/26 12:21:49
	功能：例子（测试脚本时使用的计时器）
*****************************************************/

using System;
using UnityEngine;

namespace HTUtility.Example
{
    public class TimerServiceExample : MonoBehaviour
    {
        private TimerService mTimerSvc;
        private string mTimer1 = "timer1";
        private void Awake()
        {
            //初始化计时器服务
            mTimerSvc = TimerService.Instance;
            mTimerSvc.Init();
            //订阅（注册）计时器
            mTimerSvc.Subscribe(mTimer1);
        }

        private void Start()
        {
            //使用计时功能：测试 Function 的性能消耗（以 加法 为例）
            int times = 10000000;//循环1000万次
            float time;//计时时间
            int a = 1;
            int b = 2;
            int res = 0;

            //1.不使用 Function：
            mTimerSvc.Begin(mTimer1);//开启计时
            for (int i = 0; i < times; i++)
            {
                res = a + b;
            }
            mTimerSvc.End(mTimer1);//结束计时
            time = mTimerSvc.GetTotalTime(mTimer1);
            Debug.LogFormat("不使用 Funciton，循环{0}次，共耗时(毫秒)：{1}", times, time);
            //2.使用 Function：
            mTimerSvc.Begin(mTimer1);//开启计时
            for (int i = 0; i < times; i++)
            {
                res = Plus(a, b);
            }
            mTimerSvc.End(mTimer1);//结束计时
            time = mTimerSvc.GetTotalTime(mTimer1);
            Debug.LogFormat("使用 Funciton，循环{0}次，共耗时(毫秒)：{1}", times, time);
        }

        private void OnDisable()
        {
            mTimerSvc.Unsubscribe(mTimer1);//取消订阅
        }

        private int Plus(int a, int b)
        {
            return a + b;
        }
    }
}
